package Colletion_Study.Set_01;

import java.util.TreeSet;

public class TreeSetDemo3 {
    public static void main(String[] args) {
        //如果对象没指定比较规则，则会抛出异常
        //方式一：
        //      默认的排序规则/自然排序规则
        //      Javabean类实现Comparable接口，实现里面的方法compareTo()，再指定规则
        //方式二：
        //      比较器排序
        //      创建TreeSet对象的时候，传递比较器Comparator指定规则
        //使用原则：默认使用第一种，如果第一种不能满足需求，则使用第二种

        /*
            需求：存入四个字符串，“c”，“ab”，“df”，“qwer”
            按照长度排序，如果长度一样，则按照首字母顺序排序
         */
        // o1表示要添加的元素
        // o2表示红黑树已经存在的元素
        // 返回值：
        //      正数：则认为要存储的元素是大的 存在右边
        //      负数：则认为要存储的元素是小的，存在左边
        //      0：  则认为要存储的元素已经存在，舍弃
        // 按照长度排序，如果长度一样 则按照首字母排序，如果不一样则按照长度排序
        TreeSet<String> ts = new TreeSet<>(((o1, o2) -> (o1.length() - o2.length()) == 0 ? o1.compareTo(o2) : o1.length() - o2.length()));

        ts.add("c");
        ts.add("ab");
        ts.add("df");
        ts.add("qwer");
        System.out.println(ts);
    }
}
